/* 
 * Super admin menu renderer
 */
$.handleError = function( s, xhr, status, e ) {
    // If a local callback was specified, fire it
    if ( s.error ) {
        s.error.call( s.context || window, xhr, status, e );
    }
    !!console && console.log(s,xhr,status, e);
    // Fire the global callback
    if ( s.global ) {
        (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
    }
};

$(function(){
    admin_init();
});

function admin_init(){
    !!console && console.log('-===X3 ADMIN MODULE===-');
    for(i in CKEDITOR.instances) CKEDITOR.instances[i].destroy();
    var superindex = 0;
    $('.left_menu ul').sortable({
        items: "li:not(.admin)",
        connectWith:".handle-menu-admin",
        delay:250,
        start:function(e,ui){
            $('.global-menu-handle').addClass('active');
            ui.item.addClass('moving');
            superindex = $(this).children('li').index(ui.item)-1;
            if(superindex<0)superindex = 0;
        },
        stop:function(e,ui){
            $('.global-menu-handle').removeClass('active');
            ui.item.removeClass('moving');
            var ul = ui.item.parent();
            var weights = [];
            ul.find('a[menuid]').each(function(){
                weights.push($(this).attr('menuid'));
            });
            $.post('/menu/weights',{weights:weights});
        }
    });
    $('.handle-menu-admin').sortable({
        over:function(e,ui){
            $(this).addClass('active');
        },
        out:function(){
            $(this).removeClass('active')
        }
    });
    $('.handle-menu-admin#edit-link').on('sortreceive',function(event,ui){
        var id = ui.item.children('a').attr('menuid');
        ui.item.insertAfter(ui.sender.children('li:eq('+superindex+')'));
        var content = $('<div />').css('text-align','center').append('<img height="32" src="/images/preloader.gif" />');
        var D = $.dialog(content,'Редактирование меню',{
            callback:function(){
                var form = $(this).find('form');
                if(typeof form[0] === 'undefined'){
                    return true;
                }
                $.post(form.attr('action'),form.serialize(),function(m){
                    if(m.status === 'OK'){
                        location.reload();
                    }else if(typeof m === 'object'){
                        var errs = form.find('.errors').css('display','block')
                        errs.html(m.message);
                    }else {
                        form.find('.errors').css('display','block').html('Ошибка на сервере!');
                    }
                },'json').error(function(){
                    form.find('.errors').css('display','block').html('Ошибка на сервере!');
                })
                return false;
            }
            });
        $.get('/menu/add/id/'+id,function(m){
            var x = $(m);
            x.find('.save').remove();
            content.removeAttr('style').html(x);
            x.slideDown(function(){
                D.setRelativePosition(window);
            });
        }).error(function(){
            content.removeAttr('style').html('<b style="color:red">Ошибка на сервере. Обратитесь к администратору</b>');
        });
    });
    $('.handle-menu-admin#delete-link').on('sortreceive',function(event,ui){
        var id = ui.item.children('a').attr('menuid');
        $.get('/menu/delete/',{id:id},function(){ui.item.remove();});
    });
    
    $('.parents ul').sortable({
        delay:250,
        stop:function(e,ui){
            var ul = ui.item.parent();
            var weights = [];
            ul.find('a[menuid]').each(function(){
                weights.push($(this).attr('menuid'));
            });
            $.post('/menu/weights',{weights:weights});
        }
    });
    
    //////////////////////
    //x3editable logic
    //////////////////////
    $('[x3editable]').each(function(){
        var attr = $(this).attr('x3editable');
        var self = this;
        if($(this)[0].hasAttribute('contenteditable')){
            var name = $(this).attr('id');
            CKEDITOR.inline(name,{
                on:{
                    blur:function(e){
                        if ( CKEDITOR.instances[name].checkDirty() ){
                            $.loader();
                            $.post('/site/update',{'attr':attr,'value':$(self).html()},function(){$.loader();CKEDITOR.instances[name].resetDirty();}).error(function(){$.loader()});
                        }
                    }
                }
            });
//            $(self).addClass('x3edit').on('blur',function(){
//                if ( CKEDITOR.instances[name].checkDirty() ){
//                    $.loader();
//                    $.post('/site/update',{'attr':attr,'value':$(this).html()},function(){$.loader()}).error(function(){$.loader()});
//                }
//            });
        }else{
            var a = $('<a />').attr({'href':'#'})
                    .css({'position':'absolute','right':'-16px','top':'50%','margin-top':'-8px','padding':'0'})
                    .append('<img src="/images/lil-pencil-icon.png" />').click(function(){ 
                a.toggle();
                $(self).attr('contentEditable',true).addClass('x3edit').one('blur',function(){
                    $.post('/site/update',{'attr':attr,'value':$(this).text()});
                    $(self).attr('contentEditable',false).removeClass('x3edit');
                    a.toggle();
                }).focus();
                return false;
            });
            $(self).css({'position':'relative'}).append(a);
        }
    });
}